    package controladores;

    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.List;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
    import javax.faces.context.FacesContext;
    import javax.inject.Inject;
    import modelo.Categoria;
    import modelo.Consumible;
    import modelo.Persona;
    import modelo.Usuario;
    import negocio.CategoriaBI;
    import negocio.PersonaBI;
    import negocio.UsuarioBI;
    import negocio.ConsumibleBI;

    @ManagedBean(name="creaCmbleCtrl")
    @ViewScoped
    public class CrearConsumibleCtrl implements Serializable{
        private static final long serialVersionUID=1L;

        @Inject
        private CategoriaBI categoriaBI;
        @Inject
        private PersonaBI personaBI;
        @Inject
        private UsuarioBI usuarioBI;
        @Inject
        private ConsumibleBI consumibleBI;
        private LoginCtrl login;
        private Usuario usuario;
        private String nombre;
        private Double costo;
        private List<String> idCategoriaCmble;
        private String descripcion;
        private String idProveedor;

        public String getIDProveedor() {
            return idProveedor;
        }

        public void setIDProveedor(String proveedor) {
            this.idProveedor = proveedor;
        }


        public CategoriaBI getCategoriaBI() {
            return categoriaBI;
        }

        public void setCategoriaBI(CategoriaBI categoriaBI) {
            this.categoriaBI = categoriaBI;
        }

        public PersonaBI getPersonaBI() {
            return personaBI;
        }

        public void setPersonaBI(PersonaBI personaBI) {
            this.personaBI = personaBI;
        }

        public LoginCtrl getLogin() {
            return login;
        }

        public void setLogin(LoginCtrl login) {
            this.login = login;
        }

        public Usuario getUsuario() {
            return usuario;
        }

        public void setUsuario(Usuario usuario) {
            this.usuario = usuario;
        }

        public String getNombre() {
            return nombre;
        }

        public void setNombre(String nombre) {
            this.nombre = nombre;
        }

        public Double getCosto() {
            return costo;
        }

        public void setCosto(Double costo) {
            this.costo = costo;
        }

        public String getDescripcion() {
            return descripcion;
        }

        public void setDescripcion(String descripcion) {
            this.descripcion = descripcion;
        }

        public UsuarioBI getUsuarioBI() {
            return usuarioBI;
        }

        public void setUsuarioBI(UsuarioBI usuarioBI) {
            this.usuarioBI = usuarioBI;
        }

        public List<String> getIdCategoriaCmble() {
            return idCategoriaCmble;
        }

        public void setIdCategoriaCmble(List<String> idCategoriaCmble) {
            this.idCategoriaCmble = idCategoriaCmble;
        }


        public void guardar() throws Exception{
            login = (LoginCtrl)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("login");
            String nombreUsuario = login.getUsuario();
            usuario = usuarioBI.buscarUsuario(nombreUsuario);
            try{
                Consumible consumible = new Consumible();
                consumible.setIdUsuario(usuario);
                consumible.setNombre(nombre);
                consumible.setCosto(BigDecimal.valueOf(costo));
                if(idCategoriaCmble != null && idCategoriaCmble.size()>0) {
                    ArrayList<Categoria> categorias = new ArrayList<Categoria>();
                    for(String idCategoria : idCategoriaCmble)
                    {
                       categorias.add(categoriaBI.buscarCategoria(Integer.valueOf(idCategoria))); 
                    }
                    consumible.setCategoriaList(categorias);
                }
                consumible.setDescripcion(descripcion);
                Persona persona = personaBI.buscarPersona(Integer.valueOf(idProveedor));
                consumible.setIdPersonaProveedor(persona);
                consumible.setEstatus("A");
                consumibleBI.crear(consumible);
                FacesContext.getCurrentInstance()
                        .addMessage(null, 
                            new FacesMessage(FacesMessage.SEVERITY_INFO, "Listo", "Guardado con éxito"));
            }catch(Exception e){
                e.printStackTrace();
                FacesContext.getCurrentInstance().addMessage(null, 
                            new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error al crear el consumible", e.getMessage()));
            }   
        }
    }
